home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 23 / AMIGAplus Sonderheft 23 (2000)(Falke)(DE)[!].iso / Updates / HD-Installer / -WHDLoad- / WHDLoad_dev / Patcher1.04 / PARAMQTX / paramcarriercommand.asm < prev    next >
Assembly Source File  |  1999-11-08  |  11KB  |  490 lines

  1.  
  2. ;fixed: codeprotection removed
  3. ;    illegal access to a memoryplace $fcxxxx caused a crash
  4. ;      on 68030+ (mmu?), moreover it was useless, possibly
  5. ;      a freezertest
  6. ;    diskroutines contained dbf-delays, now vbi-synced or 
  7. ;      removed
  8.  
  9. ;This is an example of a formatconversion.
  10. ;At first it formats a disk and creates a directory S. (cycle 1)
  11. ;Then it gets the data from the original disk. (cycle2)
  12. ;These data can be read only index-synchronized with OS1.3.
  13. ;Therefore here is a strange decoding routine.
  14. ;Then these data will be modified by changes and saved as file.
  15. ;A proper startup-sequence will be added. (cycle3)
  16.  
  17.     INCDIR    ASM-ONE:INCLUDE2.0/
  18.  
  19.     INCLUDE    OWN/Patcher.I
  20.     INCLUDE    DEVICES/TRACKDISK.I
  21.     INCLUDE    EXEC/EXEC_LIB.I
  22.     INCLUDE    EXEC/IO.I
  23.     INCLUDE    LIBRARIES/DOS_LIB.I
  24.  
  25. HP    MOVEQ.L    #20,D0
  26.     RTS
  27.     DC.L    TAB
  28.     DC.B    'PTCH'
  29.     DC.B    '$VER:CARRIER_COMMAND_1.0',0
  30.     EVEN
  31.  
  32. TAB    DC.L    PCH_INIT,INITROUT
  33.     DC.L    PCH_FILECOUNT,3
  34.     DC.L    PCH_ADAPTOR,ADNAME
  35.     DC.L    PCH_DISKNAME,DISKNAMEARRAY
  36.     DC.L    PCH_FILENAME,FILENAMEARRAY
  37.     DC.L    PCH_CHANGES,CHANGESARRAY    
  38.     DC.L    PCH_NAME,PARAMNAME
  39.     DC.L    PCH_DATALENGTH,LENGTHTABLE
  40.     DC.L    PCH_SAVEDATA,DATATABLE
  41.     DC.L    PCH_SPECIAL,SPECIALARRAY
  42.     DC.L    PCH_STATE,STATEARRAY
  43.     DC.L    PCH_STATE2,STATEARRAY2
  44.     DC.L    0
  45.  
  46. ADNAME    DC.B    'Fixed by Harry.',0
  47.     EVEN
  48.  
  49.  
  50. PARAMNAME    DC.B    'Carrier Command V1.2',0
  51.     EVEN
  52.  
  53.  
  54. DISKNAMEARRAY    DC.L    0        ;no name for formatting a disk
  55.     DC.L    DISK1NAME        ;to save the read data on the 
  56.     DC.L    DISK1NAME        ;newly formatted disk
  57.  
  58. DISK1NAME    DC.B    'CarrierCommand',0
  59.     EVEN
  60.  
  61.  
  62. FILENAMEARRAY    DC.L    0        ;no filename needed to format a disk
  63.     DC.L    FILE2NAME        ;filename of the mainprogram
  64.     DC.L    FILE3NAME        ;adding a startup-sequence
  65. FILE2NAME    DC.B    'CarrierCommand',0
  66.     EVEN
  67. FILE3NAME    DC.B    'S/Startup-Sequence',0
  68.     EVEN
  69.  
  70. LENGTHTABLE    DC.L    $1600        ;just a space of $1600 for personal use
  71.     DC.L    360076            ;save-length (theres a customloadingroutine)
  72.     DC.L    DATA3END-DATA3        ;length of the startup
  73.  
  74. DATATABLE    DC.L    0        ;no unread data to save
  75.     DC.L    0            ;no unread data to save
  76.     DC.L    DATA3            ;startup-sequence to add
  77.  
  78. DATA3    DC.B    'CarrierCommand',$a
  79. DATA3END
  80.     EVEN
  81.  
  82. CHANGESARRAY    DC.L    0        ;no changes to made in cycle 1
  83.     DC.L    CHANGE2            ;changes to the data read from the original
  84.     DC.L    0            ;no changes to made in cycle 3
  85.  
  86. CHANGE2
  87.     DC.B    $00,$80,$00,$00,$4C,$00,$00,$03
  88.     DC.B    $F3,$00,$00,$00,$00,$00,$00,$00
  89.     DC.B    $02,$00,$00,$00,$00,$00,$00,$00
  90.     DC.B    $01,$00,$01,$5F,$89,$40,$00,$00
  91.     DC.B    $01,$00,$00,$03,$E9,$00,$01,$5F
  92.     DC.B    $89,$4E,$F9,$00,$05,$7D,$28,$46
  93.     DC.B    $FC,$27,$00,$2E,$7C,$00,$05,$86
  94.     DC.B    $AA,$4E,$B9,$00,$01,$A0,$EC,$50
  95.     DC.B    $F8,$12,$0F,$50,$F8,$22,$9C,$31
  96.     DC.B    $FC,$00,$04,$22,$9E,$4E,$F8,$5F
  97.     DC.B    $50,$80,$70,$3A,$06,$00,$40,$61
  98.     DC.B    $00,$04,$06,$80,$70,$D6,$06,$76
  99.     DC.B    $01,$61,$00,$03,$6A,$00,$70,$DF
  100.     DC.B    $FA,$80,$71,$6B,$09,$7F,$61,$00
  101.     DC.B    $02,$D6,$08,$2E,$00,$01,$00,$00
  102.     DC.B    $71,$75,$1F,$80,$71,$C4,$08,$00
  103.     DC.B    $10,$61,$00,$02,$7C,$4E,$71,$80
  104.     DC.B    $74,$26,$08,$30,$3C,$00,$B4,$08
  105.     DC.B    $39,$00,$00,$80,$74,$2F,$09,$DF
  106.     DC.B    $F0,$05,$66,$F6,$08,$39,$00,$00
  107.     DC.B    $00,$80,$74,$39,$1B,$DF,$F0,$05
  108.     DC.B    $67,$F6,$51,$C8,$FF,$EA,$4E,$75
  109.     DC.B    $4E,$71,$4E,$71,$08,$39,$00,$00
  110.     DC.B    $00,$DF,$F0,$05,$66,$F6,$08,$39
  111.     DC.B    $00,$80,$74,$55,$09,$00,$00,$DF
  112.     DC.B    $F0,$05,$67,$F6,$4E,$75,$00,$00
  113.     DC.B    $AE,$80,$00,$00,$AE,$A0,$00,$00
  114.     DC.B    $AE,$B0,$00,$00,$AE,$C0,$00,$00
  115.     DC.B    $AE,$E0,$00,$00,$AE,$F0,$00,$00
  116.     DC.B    $AF,$10,$00,$00,$AF,$20,$00,$00
  117.     DC.B    $AF,$40,$00,$00,$AF,$50,$00,$00
  118.     DC.B    $AF,$60,$00,$00,$C7,$C3,$18,$80
  119.     DC.B    $C7,$C8,$04,$12,$C1,$4E,$71,$81
  120.     DC.B    $9D,$52,$0C,$4E,$71,$4E,$71,$4E
  121.     DC.B    $71,$4E,$71,$4E,$71,$4E,$71,$81
  122.     DC.B    $A5,$AC,$08,$4E,$B9,$00,$00,$77
  123.     DC.B    $F8,$4E,$71,$85,$7D,$4C,$02,$2C
  124.     DC.B    $78,$85,$7D,$4F,$03,$04,$43,$FA
  125.     DC.B    $00,$85,$7D,$53,$02,$6A,$70,$85
  126.     DC.B    $7D,$56,$06,$4E,$AE,$FD,$D8,$23
  127.     DC.B    $C0,$85,$7D,$5D,$04,$05,$7D,$AA
  128.     DC.B    $67,$85,$7D,$63,$05,$3E,$61,$6C
  129.     DC.B    $2C,$78,$00,$85,$7D,$69,$08,$04
  130.     DC.B    $4E,$AE,$FF,$6A,$46,$FC,$27,$85
  131.     DC.B    $7D,$72,$03,$4F,$F8,$01,$00,$85
  132.     DC.B    $7D,$76,$FF,$33,$FC,$7F,$FF,$00
  133.     DC.B    $DF,$F0,$9A,$33,$FC,$7F,$FF,$00
  134.     DC.B    $DF,$F0,$96,$41,$F9,$00,$00,$00
  135.     DC.B    $06,$43,$F8,$03,$DE,$20,$3C,$00
  136.     DC.B    $01,$5F,$49,$22,$D8,$53,$80,$66
  137.     DC.B    $FA,$4E,$F8,$03,$DE,$4A,$B9,$00
  138.     DC.B    $05,$7D,$AA,$67,$0C,$2C,$78,$00
  139.     DC.B    $04,$22,$7A,$00,$20,$4E,$AE,$FE
  140.     DC.B    $62,$70,$14,$4E,$75,$00,$00,$00
  141.     DC.B    $00,$67,$72,$61,$70,$68,$69,$63
  142.     DC.B    $73,$2E,$6C,$69,$62,$72,$61,$72
  143.     DC.B    $79,$00,$00,$00,$00,$00,$00,$2C
  144.     DC.B    $7A,$FF,$FA,$23,$EE,$00,$22,$00
  145.     DC.B    $05,$7D,$94,$32,$7C,$00,$00,$4E
  146.     DC.B    $AE,$FF,$22,$4E,$AE,$FE,$F2,$4E
  147.     DC.B    $AE,$FE,$F2,$41,$F9,$00,$00,$00
  148.     DC.B    $00,$23,$C8,$00,$DF,$F0,$80,$30
  149.     DC.B    $39,$00,$DF,$F0,$04,$02,$40,$00
  150.     DC.B    $01,$67,$F4,$30,$39,$00,$DF,$F0
  151.     DC.B    $04,$02,$40,$00,$01,$66,$F4,$30
  152.     DC.B    $39,$00,$DF,$F0,$04,$02,$40,$00
  153.     DC.B    $01,$67,$F4,$30,$39,$00,$DF,$F0
  154.     DC.B    $04,$02,$40,$00,$01,$66,$F4,$30
  155.     DC.B    $39,$00,$DF,$F0,$7C,$0C,$00,$00
  156.     DC.B    $F8,$66,$10,$33,$FC,$00,$00,$00
  157.     DC.B    $DF,$F1,$FC,$33,$FC,$0C,$01,$00
  158.     DC.B    $DF,$F1,$06,$4E,$75,$00,$00,$03
  159.     DC.B    $EC,$00,$00,$00,$05,$00,$00,$00
  160.     DC.B    $00,$00,$00,$00,$02,$00,$05,$7D
  161.     DC.B    $38,$00,$05,$7D,$64,$00,$05,$7D
  162.     DC.B    $7E,$00,$05,$7D,$B6,$00,$00,$00
  163.     DC.B    $01,$00,$00,$00,$01,$00,$05,$7D
  164.     DC.B    $CC,$00,$00,$85,$7E,$75,$17,$00
  165.     DC.B    $00,$00,$00,$00,$03,$F2,$00,$00
  166.     DC.B    $03,$EA,$00,$00,$00,$01,$FF,$FF
  167.     DC.B    $FF,$FE,$00,$00,$03,$F2,$00,$40
  168.     DC.B    $00,$00
  169.  
  170.     EVEN
  171.  
  172.  
  173. ;the parameter-initializing opens source- and destinationdevice, 
  174. ;both are needed
  175. INITROUT    MOVEQ.L    #0,D0
  176.     MOVE.L    PTB_OPENDEVICE(A5),A0
  177.     JSR    (A0)
  178.     TST.L    D0
  179.     BEQ.S    .1
  180.     RTS
  181.  
  182. .1    MOVEQ.L    #1,D0
  183.     MOVE.L    PTB_OPENDEVICE(A5),A0
  184.     JSR    (A0)
  185.     RTS    
  186.  
  187. ;loading-statetexts for the cycles
  188. STATEARRAY    DC.L    FORMATSTATE1    ;i programmed the formatting in the
  189.                     ;loading-routine and i'm to lazy to change that
  190.     DC.L    LOADSTATE2
  191.     DC.L    SAVESTATE
  192.  
  193. FORMATSTATE1
  194.     DC.B    'Please insert an empty dd-disk',$a
  195.     DC.B    'in your destination drive.',0
  196.     EVEN
  197.  
  198. LOADSTATE2
  199.     DC.B    'Please insert your original writepro-',$A
  200.     DC.B    'tected disk in the source drive.',0
  201.     EVEN
  202.  
  203. STATEARRAY2    DC.L    0        ;no text in cycle 1
  204.     DC.L    SAVESTATE
  205.     DC.L    SAVESTATE
  206.  
  207.  
  208. SAVESTATE    
  209.     DC.B    'Please insert your destination disk.',0
  210.     EVEN
  211.  
  212. ;routines to 'load' something
  213. SPECIALARRAY    DC.L    FORMAT        ;more correctly this would be put to
  214.                     ;PCH_SAVEPGM, but i'm to lazy
  215.     DC.L    LOADROUT        ;load stuff from original
  216.     DC.L    0            ;nothing special in cycle 3
  217.  
  218.  
  219. FORMAT
  220.     MOVEQ.L    #0,D0            ;format dd-disk in destination-drive
  221.     LEA.L    DISK1NAME(PC),A0
  222.     MOVE.L    PTB_FORMATDEST(A5),A1
  223.     JSR    (A1)
  224.     TST.L    D0
  225.     BEQ.S    .1
  226. .ERR    MOVEQ.L    #-1,D0
  227.     RTS
  228.  
  229. .1    MOVE.L    #DIRNAME,D1        ;and create a 's'-drawer
  230.     MOVE.L    PTB_DOSBASE(A5),A6
  231.     JSR    _LVOCREATEDIR(A6)
  232.     TST.L    D0
  233.     BEQ.S    .ERR
  234.     MOVE.L    D0,D1
  235.     JSR    _LVOUNLOCK(A6)
  236.     MOVEQ.L    #0,D0
  237.     RTS
  238.  
  239.  
  240. DIRNAME    DC.B    'CarrierCommand:S',0
  241.     EVEN
  242.  
  243. LOADROUT
  244.     MOVEQ.L    #0,D7                ;one diskchange allowed
  245. .NEU
  246. .4    MOVE.L    PTB_DEVICESOURCEPTR(A5),A1    ;disk in sourcedrive?
  247.     MOVE.W    #TD_CHANGESTATE,IO_COMMAND(A1)
  248.     MOVE.L    (_SYSBASE).W,A6
  249.     JSR    _LVODOIO(A6)
  250.     TST.L    IO_ACTUAL(A1)
  251.     BNE.W    .NOTCC
  252.  
  253.     MOVE.L    PTB_ADDRESSOFFILE(A5),A4    ;load first part of disk
  254.     LEA.L    $4C(A4),A2            ;offset to load in the dataspace
  255.     MOVE.L    #$9,D2                ;starttrack on the disk
  256.     MOVE.L    #$50000,D3            ;$50000 bytes to read
  257.     MOVEQ.L    #0,D4                ;data from the start of the track
  258. ;    bra.s    .5                ;because reading starts with
  259.                         ;trackstart, this is obsolete
  260.  
  261. .3    TST.L    D4
  262.     BNE.S    .1
  263. .5    MOVEQ.L    #$4,D6                ;4 tries, then error
  264. .55    MOVE.L    PTB_DEVICESOURCEPTR(A5),A1
  265.     MOVE.L    PTB_SPACE(A5),IO_DATA(A1)    ;track is to load in PTB_SPACE
  266.     MOVE.L    #$7FFE,IO_LENGTH(A1)        ;double length of track
  267.                         ;to decode the index-sync-read data
  268.     MOVE.L    D2,D0                ;my own trackcounter
  269.     ADD.L    D0,D0                ;original is one-sided
  270.     MOVE.L    D0,IO_OFFSET(A1)
  271.     MOVE.W    #TD_RAWREAD,IO_COMMAND(A1)
  272.     MOVE.B    #IOTDB_INDEXSYNC,IO_FLAGS(A1)
  273.     MOVE.L    (_SYSBASE).W,A6
  274.     JSR    _LVODOIO(A6)
  275.     TST.L    D0
  276.     BNE.W    .ERR
  277.     MOVE.L    PTB_SPACE(A5),A0
  278.     LEA.L    $7FFE(A0),A1            ;end of buffer
  279.     LEA.L    $7FFE(A0),A3
  280.     BSR.W    TRACKDECODE
  281.     TST.L    D0
  282.     BEQ.S    .R1OK
  283.     DBF    D6,.55
  284.     BRA.W    .NOTCC
  285.  
  286. .R1OK    ADDQ.L    #1,D2
  287.     ST    D7                ;correct disk - nothing anymore
  288.                         ;to change
  289. .1    MOVE.B    (A3)+,(A2)+
  290.     ADDQ.L    #1,D4
  291.     CMP.L    #$1400,D4            ;tracklength
  292.     BNE.S    .2
  293.     MOVEQ.L    #0,D4                ;new track
  294. .2    SUBQ.L    #1,D3
  295.     BNE.S    .3
  296.  
  297.     LEA.L    (A4),A2
  298.     ADDA.L    #$4FFB4+$22,A2            ;second part to read from the
  299.     MOVE.L    #$